What is a type alias in Scala and how does it work